/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-06-25
 * Time: 16:29
 */

public class Solution {
    // 滑动窗口
    public int longestSubarray(int[] nums) {
        int len = nums.length;
        int left = 0;
        int right = 0;
        int flag = 0;
        int max = 0;
        for (; right < len; right++) {
            // 值为 1 时什么都不做
            if (nums[right] == 0) {
                // 值为 0
                if (flag == 0) {
                    // 把这个 0 删除了
                    flag = 1;
                }else {
                    // 已经删除一个 0 了, 不能把这个 0 删除了
                    // 更新最大值
                    // 因为 窗口里面此时有 两个 0 所以得 - 1
                    max = Math.max(max, right-left-1);
                    // 移动左边界
                    while (left <= right) {
                        if (nums[left] == 0) {
                            left++;
                            break;
                        }
                        left++;
                    }
                }
            }
        }
        // 最后 right == len, 所以要 - 1
        return Math.max(max, right-left-1);
    }
}
